/* 
 * File:   entity_formatter.hpp
 * Author: jolo
 *
 * Created on 12. Oktober 2011, 07:00
 */

#ifndef TOOLS_ENTITY_FORMATTER_HPP
#define	TOOLS_ENTITY_FORMATTER_HPP

#include <core/core.hpp>

namespace model {
    class entity;
    class repository;
    class project;
    class chemical_element;
    
    typedef shared_ptr<entity> entity_ptr;
    typedef shared_ptr<repository> repository_ptr;
    typedef shared_ptr<project> project_ptr;
    typedef shared_ptr<chemical_element> chemical_element_ptr;
}

namespace tools
{

    class entity_formatter
    {
    public:
        entity_formatter();
        virtual ~entity_formatter();
        
        virtual const string format(model::entity_ptr e);
        
        const string tag(const string& value, const string& tag, const string& tag_args = "");
        
        const string make_page(const string& head, const string& body);
        const string make_head(const string& title);
        const string make_body(const string& body);
        const string make_h1(const string& txt);
        const string make_h2(const string& txt);
        const string make_table(const string_vector& rows);
        
    };
    
    typedef shared_ptr<entity_formatter> entity_formatter_ptr;
}

#endif	/* ENTITY_FORMATTER_HPP */

